
package com.dingwen.frame.vo;


import com.dingwen.frame.constant.EResultCode;
import com.dingwen.frame.constant.ITipAndMessage;
import org.springframework.util.ObjectUtils;


/**
 * result 生成
 *
 * @author dingwen
 * @date 2021/06/29
 * @since 1.0.0-SNAPSHOT
 */
public class ResultGenerator {

    /**
     * 生成结果
     * 1.成功
     * 2.没有数据
     *
     * @return {@link Result}
     */
    public static Result genOkResult() {
        return Result.builder().build();
    }

    /**
     * 生成结果
     * 1. 成功
     * 2. 消息
     *
     * @param message 消息
     * @return {@link Result}
     */
    public static Result genOkResult(String message) {
        return Result.builder().message(message).build();
    }


    /**
     * 生成结果
     * 1.成功
     * 2.数据
     * 3.数据为空显示查询结果为空提示
     *
     * @return {@link Result}
     */
    public static Result genOkResult(Object data) {
        return Result.builder()
                .data(data)
                .code(ObjectUtils.isEmpty(data) ? EResultCode.RESULT_BLANK.code() : EResultCode.OK.code())
                .message(ObjectUtils.isEmpty(data) ? ITipAndMessage.RESULT_BLANK : ITipAndMessage.SUCCESS)
                .build();
    }

    /**
     * 生成失败的结果
     * 1. 消息
     *
     * @param message 消息
     * @return {@link Result}
     */
    public static Result genFailureResult(String message) {
        return Result.builder().message(message).code(EResultCode.FAILURE.code()).build();
    }

    /**
     * 生成失败的结果
     * 1. 消息
     * 2. 状态码
     *
     * @param message    消息
     * @param eResultCode 结果代码
     * @return {@link Result}
     */
    public static Result genFailureResult(String message, EResultCode eResultCode) {
        return Result.builder().message(message).code(eResultCode.code()).build();
    }
}